﻿using UnityEngine;
using System.Collections;
using System;

namespace UI
{
    public class RecycleSelectEquipItem : RecycleSelectItemBase , IComparable 
    {
        public CommonIcon icon;
        public UILabel nameLabel;
        public UILabel levelLabel;
        public UILabel refineLabel;

        UIEquipment uiEquipment;

        public override int GetLevel()
        {
            return uiEquipment.level;
        }
        public override int GetBreachLevel()
        {
            return base.GetBreachLevel();
        }

        protected override void SetData(object value)
        {
            UIEquipment equip = value as UIEquipment;
            uiEquipment = equip;
            icon.SetData(equip.equipId, false, -1, equip);
            if (!string.IsNullOrEmpty(equip.lastHeroId))
            {
                nameLabel.text = equip.GetWeaponNameWithHero(equip.lastHeroId);
            }
            else
            {
                nameLabel.text = equip.name;
            }
            levelLabel.text = TableTextBlo.GetText("level") + equip.level;
            refineLabel.text = "" + equip.refineLv;
        }

        public override string GetItemGUID()
        {
            return uiEquipment.guid;
        }

        public UIEquipment GetUIEqiupment()
        {
            return uiEquipment;
        }

        

        public int Compare(object x, object y)
        {
            RecycleSelectEquipItem itemX = x as RecycleSelectEquipItem;
            RecycleSelectEquipItem itemY = y as RecycleSelectEquipItem;
            UIEquipment uiEquipX = itemX.GetUIEqiupment();
            UIEquipment uiEquipY = itemY.GetUIEqiupment();

            if (uiEquipX.equipData.quality > uiEquipY.equipData.quality)
            {
                return 1;
            }
            else if (uiEquipX.equipData.quality < uiEquipY.equipData.quality)
            {
                return -1;
            }
            else
            {
                if(uiEquipX.refineLv > uiEquipY.refineLv)
                {
                    return 1;
                }
                else if (uiEquipX.refineLv < uiEquipY.refineLv)
                {
                    return -1;
                }
                else
                {
                    if (uiEquipX.level > uiEquipY.level)
                    {
                        return 1;
                    }
                    else if (uiEquipX.level < uiEquipY.level)
                    {
                        return -1;
                    }
                    else
                    {
                        return uiEquipX.equipId.CompareTo(uiEquipY.equipId);
                    }
                }
            }
        }

        public int CompareTo(object obj)
        {
            RecycleSelectEquipItem itemX = this; 
            RecycleSelectEquipItem itemY = obj as RecycleSelectEquipItem;
            UIEquipment uiEquipX = itemX.GetUIEqiupment();
            UIEquipment uiEquipY = itemY.GetUIEqiupment();

            if (uiEquipX.equipData.quality > uiEquipY.equipData.quality)
            {
                return 1;
            }
            else if (uiEquipX.equipData.quality < uiEquipY.equipData.quality)
            {
                return -1;
            }
            else
            {
                if (uiEquipX.refineLv > uiEquipY.refineLv)
                {
                    return 1;
                }
                else if (uiEquipX.refineLv < uiEquipY.refineLv)
                {
                    return -1;
                }
                else
                {
                    if (uiEquipX.level > uiEquipY.level)
                    {
                        return 1;
                    }
                    else if (uiEquipX.level < uiEquipY.level)
                    {
                        return -1;
                    }
                    else
                    {
                        return uiEquipX.equipId.CompareTo(uiEquipY.equipId);
                    }
                }
            }
        }
    }

}